home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / morse / morse153 / morse.doc < prev    next >
Text File  |  1993-05-27  |  48KB  |  1,063 lines

  1. MORSE CODE TRAINER RELEASE 1.51 DOCUMENTATION
  2. ---------------------------------------------
  3. ---------------------------------------------
  4.  
  5. AUTHORSHIP AND COPYRIGHT
  6.  
  7. Authorship of the program and kudos are as follows:
  8. Jim Raehl N7KXI wrote the menus and most of the functions.
  9. Keith McQueen N7HMF wrote the character sounding and timing routines.
  10. Mark Gayman (no call yet) wrote a high resolution timing routine.
  11.  
  12. A $5 contribution is most welcome and encourages further development.
  13.  
  14. Suggestions for improvement are welcome.  Call Jim at (801) 225-9630
  15. evenings or weekends.  Send written suggestions to the following address
  16.    Jim Raehl  N7KXI
  17.    336 North 750 East
  18.    Orem, Utah  84057
  19. or send packet radio messages to N7KXI@N7KXI.UT.USA.NA.  Internet address
  20. is jraehl@wicat.com.
  21.  
  22. Kudos to the following for their suggestions:
  23. Gordon Smith K7HFV      Steve Martin NR7P        Steve Whitehead NV7V
  24. Vern Cole KF7XM         Jerry Bennion WR7N       Craig Teerlink KF7OY
  25.  
  26. This program is copyrighted (c) 1993 by Jim Raehl.  All rights are reserved.
  27. Commercial exploitation without permission is severely frowned on.
  28.  
  29. Features of this program include:
  30. 1.  Four kinds of learning sequences (or create your own).
  31. 2.  A wide variety of pseudo-random practice character environments.
  32. 3.  21 program/sending characteristics may be set and saved.
  33. 4.  Many QSO/test databases, each with its own sending characteristics.
  34. 5.  Immense numbers of "randomized" QSO/tests.
  35. 6.  Accurate character and spacing speed on most IBM PC compatibles.
  36. 7.  User may type each character at the computer as it is sounded.
  37. 8.  Create your own practice tapes, with reference printouts.
  38.  
  39.  
  40. HAM RADIO EXAMS AND REQUIREMENTS
  41.  
  42. Ham radio exams are given regularly in most parts of the country.  The code
  43. part of the exam need not be passed at the same session as the written
  44. part.  However, both code and written exams must be passed for the
  45. intended class of license.  A Certificate of Successful Completion of Exam
  46. (CSCE) will be issued for passed exam portions.
  47.  
  48. The requirements for the various license classes are
  49. 1. Novice -- 5 words per minute (wpm) Morse and Novice written exam
  50. 2. Technician -- Novice written exam plus Technician written exam
  51.    (Technician gives all amateur privileges in the VHF and UHF bands)
  52. 3. General -- Technician requirements plus 13 wpm Morse and General written
  53.    (General allows talking on nearly any HF amateur band segment)
  54. 4. Advanced -- General requirements plus Advanced written exam
  55. 5. Extra -- Advanced requirements plus 20 wpm Morse and Extra written exam
  56.  
  57. This program was written to assist with the above Morse code requirements.
  58.  
  59. A person learning the Morse code for the first time will want to use the
  60. "Learn the Characters" function.  Then more advanced main menu functions
  61. may be used.  Practice should be 15 minutes in the morning and another 15
  62. minutes in the evening.  Nearly anyone can learn the Morse code in about
  63. a month (usually less) with this schedule.
  64.  
  65.  
  66.  
  67. MAIN MENU FUNCTIONS
  68. -------------------
  69. -------------------
  70.  
  71.  
  72. A. LEARN THE CHARACTERS
  73. -----------------------
  74.  
  75. This function is used when first learning the Morse code.  The characters
  76. are sounded in a progressive order.  After the new character has been
  77. sounded several times, words using that character are sent.  These contain
  78. characters from the set learned so far.  The user may also learn small groups
  79. of characters sent in random order.  Several group ordering strategies are
  80. provided.
  81.  
  82. The learning functions are:
  83.   A-E) Learn Morse characters and words in Morse--
  84.      The user specifies the point in a progressive sequence to continue
  85.      learning the Morse characters.  Thus, the user may continue where
  86.      he/she previously left off or back up to a specific character.  A
  87.      function key may also be typed to back up or move forward to a group
  88.      of characters.  Learning then resumes at the start of that group.
  89.  
  90.      A default learning sequence may be specifed, or any of four user
  91.      modifiable sequences.  The sequences are specified in files LEARN1.DAT
  92.      through LEARN4.DAT.
  93.  
  94.   F) Practice characters grouped in learning order--
  95.      This provides random character generation from small groups of
  96.      characters.  Sending small groups is initially easier than trying to
  97.      learn all the characters at once.  The grouping in this selection is
  98.      the same as when first learning the characters.  The selection may
  99.      be used as drill practice before moving on to new characters.
  100.      
  101.   G) Practice characters grouped alphabetically--
  102.      Same as B above.  The grouping is in alphabetic and numeric order of
  103.      the characters.  The selection is more difficult than in B, but not
  104.      as difficult as pure random ordering of groups.
  105.      
  106.   H) Practice characters grouped randomly--
  107.      Same as B above.  The characters are randomly ordered in the groups.
  108.      This is the most difficult character ordering within the learning
  109.      function.  When this practice drill is mastered, the user should move
  110.      on to fortunes and then psuedo-random QSO's.  The most difficult
  111.      practice will be random callsigns.
  112.  
  113.  
  114. B. TYPE CHARACTERS
  115. ------------------
  116.  
  117. This function may be used when first learning the Morse characters, to find
  118. out the sound of a character or to distinguish between the sounds of different
  119. characters.
  120.  
  121. Requests any Morse letter, digit, or punctuation.  The character is then sent
  122. (sounded).  More characters may be sent, until ESC is typed.
  123.  
  124. Prosigns are typed with a reverse slash \ character before them.  Thus the AR
  125. prosign is typed as "\AR".
  126.  
  127. You cannot verify the character by typing it after it is sent, in this
  128. function (see the change parameters menu).
  129.  
  130.  
  131. C. TYPE CHARACTER STRINGS
  132. -------------------------
  133.  
  134. This function may be used when first learning the Morse characters, to send
  135. sample text, such as "THIS IS MORSE CODE".
  136.  
  137. Requests any combination of Morse letters, digits, or punctuation, followed
  138. by the RETURN key.  The character string is then sent (sounded).  More
  139. character strings may be sent, until ESC is typed.  Typing only the RETURN
  140. key will recall the string most recently entered, and sound it again.
  141.  
  142. You cannot verify the character by typing it after it is sent, in this
  143. function (see the change parameters menu).
  144.  
  145.  
  146. D. SEND RANDOM LETTERS
  147. ----------------------
  148.  
  149. Randomly sends letters of the alphabet A-Z.  The characters may be grouped
  150. in a user-specified group size (see the change parameters menu), after which
  151. a space character will be sent.
  152.  
  153.  
  154. E. SEND RANDOM DIGITS
  155. ---------------------
  156.  
  157. Randomly sends digits 0-9.  The characters may be grouped in a user-specified
  158. group size (see the change parameters menu), after which a space character
  159. will be sent.
  160.  
  161.  
  162. F. SEND RANDOM PUNCTUATION
  163. --------------------------
  164.  
  165. Randomly sends Morse punctuation ".,?/:".  The characters may be grouped in a
  166. user-specified group size (see the change parameters menu), after which a
  167. space character will be sent.
  168.  
  169.  
  170. G. SEND RANDOM PROSIGNS
  171. -----------------------
  172.  
  173. Randomly sends Morse prosigns "AR", "KN", "AS", "BT", "SK", and "DN".
  174. These characters are sounded without any intervening space between the
  175. letters.  They are used as signals to the recipient of a QSO (conversation)
  176. in Morse code.
  177.  
  178.  
  179. H. SEND RANDOM COMMON TERMS
  180. ---------------------------
  181.  
  182. Randomly sends term abbreviations used in the Morse code.  See the ARRL
  183. book "Tune In the World" for a term list and explanations.
  184.  
  185.  
  186. I. SEND RANDOM Q SIGNALS
  187. ------------------------
  188.  
  189. Randomly sends Q signal abbreviations used in the Morse code.  See the ARRL
  190. book "Tune In the World" for a Q signal list and explanations.
  191.  
  192.  
  193. J. SEND ALL CHARACTERS RANDOMLY
  194. -------------------------------
  195.  
  196. Randomly sends all Morse characters--letters, digits, punctuation, and
  197. prosigns.  This is the hardest random character practice available.  The
  198. characters may be grouped in a user-specified group size (see the change
  199. parameters menu), after which a space character will be sent.
  200.  
  201.  
  202. K. SEND RANDOM PROBLEM CHARACTERS
  203. ---------------------------------
  204.  
  205. Requests a string of problem characters.  Characters from the string are
  206. then randomly sent.  Typing only the RETURN key will recall the string most
  207. recently entered, and sound it again.
  208.  
  209. Prosigns are typed with a reverse slash \ character before them.  Thus the AR
  210. prosign is typed as "\AR".
  211.  
  212. Characters specified more than once will be sent that much more often.  Thus,
  213. if "ABCCCD" is specified, C will be sent half the time.  The @ character
  214. causes a specified callsign to be sent (see the change parameters menu).
  215. The characters may be grouped in a user-specified group size (see the change
  216. parameters menu), after which a space character will be sent.
  217.  
  218.  
  219. L. SEND RANDOM WORDS
  220. --------------------
  221.  
  222. Words are randomly chosen from a word list and sent.  The words may be from a
  223. set of easy words, or from a set of hard words (see the change parameters
  224. menu).
  225.  
  226.  
  227. M. SEND RANDOM PHRASES
  228. ----------------------
  229.  
  230. Phrases are randomly chosen from a phrase list and sent.
  231.  
  232.  
  233. N. SEND RANDOM CALLSIGNS
  234. ------------------------
  235.  
  236. Random callsign activity of the form N7KXI DE N7HMF is generated and sent.
  237. Some letters and prosigns commonly associated with callsign usage in QSO's
  238. are also randomly added.  This code practice is the most difficult text
  239. that will be encountered on an exam, and the most difficult practice.
  240.     
  241.  
  242. O. SEND A RANDOM QSO/TEST
  243. -------------------------
  244.  
  245. Typical QSO text is sent.  The text is pseudo-random.  Portions of text may or
  246. may not be included.  Callsigns, equipment designations, and numbers are
  247. randomly generated.  Names and places are chosen from lists.
  248.  
  249. The QSO text sent by this function does not necessarily describe real
  250. conditions or callsigns.  For example, the weather may be hot with a
  251. temperature of 10 degrees.  However, if you can master these QSO's, the real
  252. Morse exam will be a snap.
  253.  
  254. The change parameters menu option I provides for generating tests with 10
  255. questions.  The user may copy the QSO text, then answer the questions.  The
  256. program will grade the exam, and indicate pass or fail.
  257.  
  258.  
  259. P. SEND A FILE
  260. --------------
  261.  
  262. Requests the name of a file containing text to be sent.  The text is then
  263. sent at the specified speed and spacing.  The file may reside in the current
  264. directory, or any directory specified in the PATH environment variable.  In
  265. addition, the file extension may be used as an environment variable in the
  266. same manner as PATH.
  267.  
  268. Given
  269.   SET PATH = .;\;\EXE   and
  270.   SET DAT = \DAT
  271. then MORSE.DAT can be found in any of the current directory, root directory,
  272. \EXE directory, or \DAT directory.
  273.  
  274.  
  275. Q. SEND YOUR FORTUNE
  276. --------------------
  277.  
  278. Picks a fortune from a database file FORTUNES.DAT, and sends it.  The
  279. fortunes are entertaining and a nice learning aid of intermediate
  280. difficulty.  They contain mostly alphabetic characters, with a little
  281. punctuation.  The fortune file may be edited with any text editor.  The
  282. character which separates one fortune from another is specified in change
  283. parameters menu option U (usually this is a control-L character).
  284.  
  285.  
  286. R. MORSE CHART
  287. --------------
  288.  
  289. Displays the dots and dashes for each practice Morse character.  The 
  290. characters are listed in ITU phonetic.  This chart is intended to be used
  291. only when the user first becomes acquainted with the Morse code.  It is
  292. NOT intended to be a learning aid.  The user should learn the code by the
  293. rhythm of each character.  Counting dots and dashes, or associating similar
  294. characters with each other, will cause grief later.
  295.  
  296.  
  297. S. HELP
  298. -------
  299.  
  300. Explanations of the menu choices and practice methods are given.  A help 
  301. menu is provided.  This menu is identical to the main menu selections.
  302.  
  303.  
  304. T. CHANGE PARAMETERS
  305. --------------------
  306.  
  307. Here the user is allowed several means of tuning the Morse code practice.
  308.  
  309. The values which may be changed are:
  310.  
  311.   A) Exam class (N)ovice, (G)eneral, (E)xtra, or QSO name
  312.   B) QSO/Exam file I is accessed (0) Randomly, (1-n) Sequentially
  313.   U) Delimiter character between QSO's in the QSO file
  314.  
  315.      This program supports a virtually unlimited set of user-specified QSO
  316.      databases.  These databases may be used for VE exams or just random
  317.      QSO practice.  Four database files are provided with the program.  These
  318.      are files QSON.DAT, QSOG.DAT, and QSOE.DAT which are intended to be
  319.      used for Novice, General, and Extra class exams.  QSOI.DAT is intended
  320.      to have a class-independent variety of text.  Each of the files
  321.      may further contain as many QSO's as desired (up to 64K of text).
  322.      See QSO FILE QUESTIONS AND RANDOMIZATION below for more information.
  323.      Also see option I below for more information.
  324.  
  325.      Each exam class has its own set of speed, tone, and other parameters.
  326.      When changing from class to class, each class's parameters are saved.
  327.      The screen color (option Q) and capture file (option N) are the same for
  328.      all exam classes.
  329.  
  330.      Change parameters menu options have been added to support this
  331.      facility.  Explanations of the options are:
  332.  
  333.      A. Exam class (N)ovice, (G)eneral, (E)xtra, or QSO name
  334.  
  335.      The user may type up to 5 characters which are allowed in an MSDOS file
  336.      name.  This character string is prefixed with "QSO" to form the name of
  337.      a QSO database file.  Files QSOI.DAT, QSON.DAT, QSOG.DAT, and QSOE.DAT
  338.      are noted for convenience.
  339.  
  340.      B. QSO/Exam file I is accessed (0) Randomly, (1-n) Sequentially
  341.  
  342.      A random QSO from the file selected in option R may be selected
  343.      (0).  On the other hand, the QSO's may be read one after the other.
  344.      The next QSO is the number given.  This number is incremented by one,
  345.      after the QSO is read.
  346.  
  347.      U. Delimiter character between QSO's in the QSO file
  348.  
  349.      Normally, each QSO in the file is separated from the next by a line
  350.      with a Control-L character.  This delimiter character may be changed
  351.      with option T.  The character is specified in hexadecimal format (two
  352.      characters in the range 0-9 and A-F).
  353.  
  354.   C) The speed at which characters are sounded (default 18.0)--
  355.      This is the speed at which the dits and dahs inside a character are
  356.      sent.  The default speed is high enough that the characters sound
  357.      natural.  By simply reducing the spacing time, the user may much more
  358.      easily progress to the 13 wpm general class exam speed.
  359.  
  360.   D) The speed at which spaces between characters are sent (default 3.0)--
  361.      This is the speed at which the interval between characters is timed.
  362.      The spacing speed is adjusted after setting the character speed, so
  363.      that the effective speed is at the desired rate.
  364.  
  365.   E) The effective speed at which characters are sent (default 5.0)--
  366.      This is the speed at which the characters are timed (use PARIS to
  367.      time).  The spacing speed is adjusted after setting the effective speed,
  368.      so that the effective speed is at the desired rate.
  369.  
  370.   F) The ratio between the length of a dah and a dit.  A user who is just
  371.      learning the code may wish to lengthen the dahs (increase the ratio
  372.      value).  After learning the characters, the ratio should be set to
  373.      the standard 3 dits per dah.
  374.  
  375.   G) The tone frequency at which character dits are sounded (default 700)--
  376.      This allows the user to adjust the PC's speaker tone to a pleasing
  377.      sound.  The tone may also be adjusted to match that of code practice
  378.      tapes the user has.
  379.  
  380.   H) The tone frequency at which character dahs are sounded (default 700)--
  381.      The user may wish to initially set dahs to a lower frequency than dits.
  382.      After learning the characters, the two tones should be set the same.
  383.  
  384.   I) Turn off and on the character sound for testing (default on)--
  385.      The speaker sound may be turned off for quickly checking operation
  386.      of the menus and program functions.  When the user first obtains the
  387.      program, he/she may wish to turn off the sound and run through the
  388.      menus.
  389.  
  390.   J) Test mode (0) practice (1) print, (2) display, (3) generate
  391.  
  392.      The user may practice with random QSO's which are displayed on the
  393.      screen as they are sounded.  Also, the user may simulate a real Morse
  394.      exam with 10 questions on the material sent.  Nothing is displayed on
  395.      the screen, until the exam is finished.  The QSO format and questions
  396.      are specified in a file of the name QSOnnnnn.DAT (see option A above).
  397.  
  398.      The test options 1, 2, and 3 are intended to be used by VE examiners.
  399.      The VE may put exams into a QSO file (see A above), then administer them
  400.      during a VE exam session.  The exams may be entirely fixed format or
  401.      randomly generated to any degree desired, as specified in the file.
  402.      This version of the program does not check the exam for legality.
  403.      See QSO FILE QUESTIONS AND RANDOMIZATION below for more information.
  404.  
  405.      The options are
  406.  
  407.      0.  Practice.  The text is displayed on the screen as it is sounded.
  408.          The user may type the characters just sounded (see options L and M
  409.          below).
  410.  
  411.      1.  Send the QSO, then display 10 questions on the QSO text.  The user
  412.          must type the answers exactly as the material was sent.  Space
  413.          characters are ignored.  The user's answers are then graded and the
  414.          user notified whether there were at least 7 correct answers.  The
  415.          QSO text is then printed, along with the questions and answers.
  416.  
  417.          There must be a printer connected, or the PRINT program may abort.
  418.  
  419.      2.  Same as 1 above, except the QSO and questions are not printed.
  420.  
  421.      3.  Generates a fixed format exam, from the current QSO/exam database.
  422.          The current QSO/exam database format will usually have some
  423.          randomization.  The fixed format exam is written to another user
  424.          selectable file.  It is also optionally printed, along with a second
  425.          page with just the questions.  An examinee can then write the
  426.          answers on that second page.
  427.  
  428.   K) Four similar parameters are controlled by this option.  The value
  429.      specified consists of an optional letter, optionally followed by a number.
  430.      The program is very forgiving about what is specified.
  431.      Example:  F5
  432.      indicates fixed size code groups, 5 characters per group.
  433.  
  434.      F. The size of code groups before space is sent (default 5)--
  435.         When using the random letters, digits, and other random character
  436.         functions, the user may wish to break up the sending into groups
  437.         of a fixed size (such as 5 characters at a time).  After the 
  438.         group is sent, a space will be sent.  This approximates the spacing
  439.         in normal text, while maintaining randomness in sending characters.
  440.         A group size of 0 means there are no spaces.
  441.  
  442.      R. A closer approximation to real Morse word size, is to send
  443.         randomly sized character groups.  In this case, the size specified
  444.         is the maximum group size.
  445.  
  446.      L. This value determines the number of times a character group is
  447.         repeated in the LEARN THE CHARACTERS function.  Each character is
  448.         repeated 5 times per group, then the group is repeated by the above
  449.         group count.  Thus, with a group size of 3 the letter A is repeated
  450.         15 times (3 groups of 5 characters each).
  451.  
  452.      W. Specifies the numbers of times a word is repeated in the LEARN THE
  453.         CHARACTERS function.  Words are sent after each character has been
  454.         sent.  The words use that character.
  455.  
  456.   L) User is required to type the character just sent (default off)--
  457.      This provides practice when the user does not have paper at hand.
  458.      It is preferred that the user write the characters on paper, as this
  459.      is how the exam is administered.
  460.  
  461.      The character is sounded, then the user must type the character on
  462.      the keyboard.  If the user types the wrong character, a gong (beep)
  463.      is sounded.  The missed character will be re-sent.  Further characters 
  464.      will not be sent until the right character, RETURN, or ESC is typed.
  465.  
  466.      Prosigns are verified by typing the two prosign letters.
  467.  
  468.      Statistics are collected when the user elects to type the character
  469.      just sounded.  These are printed on the screen whenever the code
  470.      speed and sound are printed.  The statistics are cumulative for the
  471.      entire Morse code program run.  However, the statistic counters are
  472.      reset whenever the user type function is turned off.
  473.  
  474.      The statistics are
  475.      o  Number of times the character was correctly typed.
  476.      o  Number of times the character was incorrectly typed (including
  477.         retries).
  478.      o  Number of times RETURN was typed to bypass the character.
  479.  
  480.      See also J immediately below.
  481.  
  482.   M) Characters sent before catch-up wait on user type (default 0)--
  483.      When practicing high rates of speed, the user's response time is
  484.      too slow for a send/type, send/type manner of operation (see I
  485.      above).  This parameter allows for a "send-ahead" buffer.  The user
  486.      may thus type the previous character while a new character is being
  487.      sent.
  488.  
  489.      When the send-ahead buffer is full, sending will stop until the user's
  490.      typing catches up.  An incorrect character must be retyped correctly or
  491.      RETURN typed to skip it, before the program will advance to the next
  492.      character in the buffer.
  493.  
  494.      To understand this capability, try the following action sequence
  495.      at a two word per minute rate (character rate 18, space rate 1).  The
  496.      buffer size is two.
  497.        1.  Character A is sent.  A is in the buffer.  User waits.  
  498.        2.  Character B is sent.  AB are in the buffer.  The buffer is now
  499.            full, so the program waits.  User quickly types AB.  Buffer is
  500.            now empty.
  501.        3.  Character C is sent.  C is in the buffer.  User types C.  Buffer
  502.            is now empty.
  503.        4.  Character D is sent.  D is in the buffer.  User waits.
  504.        5.  Character E is sent.  DE are in the buffer.  The buffer is now
  505.            full, so the program waits.  User types D.  Buffer contains E.
  506.        6.  Character F is sent.  EF are in the buffer.  The buffer is now
  507.            full, so the program waits.  User types F9 twice.  Buffer is
  508.            empty.
  509.  
  510.      This send-ahead buffer can be confusing if the user falls several
  511.      characters behind.  It is expected that the user can type at least at
  512.      the sending rate.  The user must also be able to remember at least as
  513.      many characters as the computer.  If the user loses track of the
  514.      characters, the user may type the PAUSE function key F9 twice, to clear
  515.      the computer buffer.
  516.  
  517.      See also I immediately above.
  518.  
  519.   N) Change the call sign emitted with @ character (default N7KXI)--
  520.      The @ character is reserved for the user's or some other callsign.
  521.      This function will change the callsign sent when @ is typed in the
  522.      type characters and type character strings main menu functions.  Any
  523.      string of up to 20 characters may be specified.
  524.  
  525.      The specified string may not contain the @ character.  A null
  526.      (RETURN-only) response for the string is printed as NULL in this
  527.      menu, and contains no characters to send.
  528.  
  529.   O) Specifies the name of a file to write the practice characters to,
  530.      at the same time they are sounded.  This can be used to capture the
  531.      text so it can be printed.  The user may tape record the sound of the
  532.      practice characters, and use the printed text as a check for accuracy.
  533.      The tape and printed text can then be used whenever a computer is not
  534.      available.
  535.  
  536.      The default for this option is no file (displayed as NULL).  When a
  537.      filename is specified, an existing file if any is closed.  The new
  538.      file is then started at the beginning (any existing data is lost).
  539.      The file will capture all practice characters until a new file is
  540.      specified, or the user types RETURN only as the new value for this
  541.      option.  In the latter case, the existing file is closed and no new
  542.      file is opened.
  543.  
  544.   P) Allows the user to specify treatment of carriage return (CR) and
  545.      line feed characters in a file.  The options are
  546.  
  547.      0.  Ignore the characters.  Do not send them.
  548.  
  549.      1.  Send these characters as spaces.  Consolidation of consecutive
  550.          spaces as one space applies.
  551.  
  552.      2.  Send these characters as \BT prosigns.  This allows the user to
  553.          identify end of lines in the practice material.
  554.  
  555.   Q) Menu prompt characters are audibly sent as Morse (default off)--
  556.      Normally menu prompts are not sent as Morse code.  A new learner may
  557.      wish to sound the prompt characters, to provide even more practice.
  558.  
  559.   R) The screen text colors may be set.  The default is white on black.
  560.      The user may specify one of eight colors for the text foreground,
  561.      optionally followed by one of eight colors for the text background.
  562.      The colors are black (X), Blue, Green, Cyan, Red, Magenta, Yellow, and
  563.      White.  Blinking (A) and intense foreground (I) may also be selected.
  564.  
  565.      Example:
  566.         YBI
  567.      Yellow foreground, Blue background, and Intense foreground.
  568.  
  569.      Example:
  570.         Y
  571.      Yellow foreground, Black background.
  572.  
  573.   S) Sets the DOS command hot key.  The default key is shift-F2.
  574.      Whenever this key is pressed, the screen is cleared and the prompt
  575.      DOS: is printed.  The user may enter DOS commands.  When finished,
  576.      type ESC as usual.  The program returns to exactly where it was.
  577.  
  578.      The hot key may be changed with option S.  The value is a single
  579.      keystroke.  Whatever key is pressed in response to the "Key or Return:"
  580.      prompt, becomes the new DOS hot key.  Excluded keys are ESC, BACKSPACE,
  581.      DEL, RETURN, LINE FEED, and SPACE.
  582.  
  583.   T) Words sent in the random words function are easy (default) or hard.
  584.      The options are
  585.  
  586.      0.  A list of common words is used.  The user may learn to recognize
  587.          some entire words this way.
  588.  
  589.      1.  This word list was chosen for difficulty of copy.  Also, the words
  590.          have a good mixture of the Morse characters.  The user is unlikely
  591.          to memorize these words.  A database file with 20,000 words is used.
  592.  
  593.   V) Send learning text (0) non-stop (1) stop words (2) type words (default).
  594.      Three methods of learning are provided in the main menu "LEARN THE
  595.      CHARACTERS" function.  The options are
  596.  
  597.      0.  The characters and words in the sequence are sounded non-stop.
  598.          The F9 pause key may be used to pause.
  599.  
  600.      1.  A prompt to copy a word is provided before a word is sounded.
  601.          Another prompt is made, after the word is sounded.
  602.  
  603.      2.  The words are not displayed as they are sounded.  The user is
  604.          expected to copy the word on paper.  The user then is prompted to
  605.          type the word.
  606.  
  607.   W) Display random characters in ITU phonetic (default off)--
  608.      Experienced radio operators should pronounce call signs and other
  609.      important information in ITU phonetic (ALFA for A, BRAVO for B, and
  610.      so forth).  This parameter helps the novice learn the proper phonetic
  611.      word for each letter.  When the random letters, digits, and other
  612.      random character functions are used, the characters are printed on
  613.      the screen in ITU phonetic.
  614.  
  615.  
  616. U. EXIT PROGRAM
  617. ---------------
  618.  
  619. This choice clears the screen and exits the Morse code program.  The program
  620. will remember your option settings (code speed, etc) for next time (in the
  621. file MORSEENV.DAT).
  622.  
  623.  
  624.  
  625. LITTLE EXTRAS IN THE PROGRAM
  626. ----------------------------
  627. ----------------------------
  628.  
  629. This is some extra information for experienced users of the Morse program.
  630.  
  631.  
  632. QSO FILE QUESTIONS AND RANDOMIZATION
  633.  
  634. Questions for VE exams may be specified in the QSO files (see change
  635. parameters options A, B, I, and U above).  The question is preceeded by the
  636. two character "/*" sequence on a line in the file.  The correct answer is
  637. whatever is on the following line, excluding space characters.  The answer
  638. line may include any randomization methods described below.  Reference to
  639. database files specified with ~nn below is especially recommended.  Other
  640. text not in the answer may be included before the question line, or after
  641. the answer line.
  642.  
  643. Questions should be carefully worded.  If units (feet, degrees, etc) are
  644. desired, that should be stated in the question.
  645.  
  646. Examples (note the period and comma must not be on the answer line, or
  647. they will be part of the answer):
  648.  
  649. ANTENNA IS UP
  650. /*How high is the antenna (include units)?
  651. 36 FT
  652. /*Where is the antenna?
  653. ON MY HOUSE
  654. .
  655.  
  656. Following is a short description of the syntax used in describing the
  657. semi-random QSO text.  The QSO text can look very cryptic, but this syntax
  658. is not intended to be a friendly language or anything like that.  It's just
  659. enough to keep the user from memorizing the QSO too fast.
  660.  
  661. First, we have the terse syntax description.  The item on the left is what
  662. is put into the file.  The item on the right is what is generated.  | means
  663. choose one.  Spaces are characters, and should be carefully watched.  Spaces
  664. at the end of lines should be especially watched.
  665.  
  666.     n                :== a digit                
  667.     t                :== a letter
  668.     punct         :== a punctuation character
  669.     prosign         :== \tt (two text characters sent as one character)    
  670.     t | n | punct | prosign :== send a character    
  671.     text             :== ttt... | nnn... | punct... | prosigns...
  672.                                 
  673.     #n text #        :== send text based on probability n+1
  674.     *n text * text * :== pick one of n text segments    
  675.     %                :== pick a digit 0 to 9        
  676.     ^         :== pick a letter A to Z        
  677.     [n text [     :== save emitted text in string n    
  678.     ]n         :== send text from string n        
  679.         ~n               :== send text from random line in file FILEnn.DAT.
  680.                                 
  681.     &n #n text # | *n text * | % | ^ | text :==        
  682.              this string picked on probability n+1    
  683.         ; anything       :== comment line (ignored)
  684.  
  685. Now the explanation.  Morse code consists of letters A-Z, digits 0-9,
  686. some punctuation characters such as period, and some prosign characters.
  687. Prosigns consist of two letters, with no inter-character spacing.  Thus
  688. the prosign AR is sent as .-.-. and BT is -...-  A prosign in the file
  689. must have a \ prefix character, to tell the code sounding routine not to
  690. insert the inter-character spacing.  When any of the above is encountered
  691. in the file, the characters (known collectively as text) are sounded as
  692. Morse code.
  693.  
  694. The specification of the numbers "n" following the random QSO tokens is as
  695. follows:
  696.   o  There may be 0, 1, or 2 digits following the token.  If there are 0
  697.      digits, the value is 0.
  698.   o  The first non-digit (0 to 9) after the token, ends the numeric
  699.      specification.
  700.   o  The maximum number of digits is 2.  Any digits following the second are
  701.      part of the Morse text.
  702.   o  A Morse text digit may not follow 0 or 1 token digits, as there is no
  703.      way to determine whether the digit is connected with the token.
  704.      (Adding some leading zeros will pad the number to 2 digits.)
  705.  
  706.  
  707. #n text #        :== send text based on probability nn+1
  708. We need to foil the problem of a user memorizing a practice QSO after
  709. hearing it a few times.  One way is to have some text only sent once in a
  710. while.  The text is enclosed in pound (#) characters.  The first # is
  711. followed by a two-digit probability of 0 to 99 percent.  Everything between
  712. the # characters and two nn probability digits not inclusive, is sent
  713. with a probability of nn.  Thus with a probability of 25, the text is only
  714. sent a fourth of the time.
  715.  
  716.  
  717. *n text * text * :== pick one of n text segments    
  718. The second method is to have the program randomly pick one of up to 99
  719. text segments.  Thus, one of 99 callsigns or one of 99 names or one of 99
  720. cities can be picked.  The user never knows which is coming.  The text
  721. segments are bracketed by asterisk (*) characters.  The first * is
  722. followed by a single digit, which is a count of segments.  That number of
  723. * characters with text between should follow the count.
  724.  
  725.  
  726. %                :== pick a digit 0 to 9        
  727. The third method is to randomly pick digits 0-9 or letters A-Z.
  728. Wherever a percent (%) character appears as text, the % is replaced by a
  729. randomly selected digit.  This is useful in callsigns, antenna altitudes,
  730. and anything else with digits in it.
  731.  
  732.  
  733. ^         :== pick a letter A to Z        
  734. Wherever an up arrow (^) character appears as text, the ^ is replace by a
  735. randomly selected letter A-Z.  This is especially useful in callsigns.
  736.  
  737.  
  738. [n text [     :== save emitted text in string n    
  739. ]n         :== send text from string n        
  740. The fourth method is to save some generated text, then send it again later
  741. in the QSO.  This was specifically added to retain callsigns generated at
  742. the start of a QSO, and use them again at the end.  The same callsign will
  743. usually be sent at both the start and end of a Morse code exam.  The text
  744. is saved in a string numbered n, and is started and ended by a left square
  745. bracket ([).  A right square bracket followed by the same digit will cause
  746. that string to be sent again.
  747.  
  748.  
  749. ~n         :== send text from a random line in file FILEnn.DAT.
  750. A line in file FILEnn.DAT is selected and sent.  Typically, these files will
  751. contain lists of cities, states, and so forth.  The files are numbered
  752. FILE00.DAT through FILE99.DAT.  Two digits must be specified in the actual
  753. file's name.
  754.  
  755.   Example:
  756.   QTH HR IS ~00.
  757.  
  758. File FILE00.DAT might contain the following lines:
  759.   WINNECONNE, WI
  760.   PARIS
  761.   ZZYZX, CA
  762.  
  763. Meaningful file names may be assigned with the SET command:
  764.   SET FILE00.DAT=CITIES.DAT
  765. All QSO text specifications for ~0 will read from CITIES.DAT.
  766.  
  767. Meaningful file names may also be assigned from the file FILENAME.DAT.
  768. The first line in this file contains the new name for FILE00.DAT, the second
  769. contains the new name for FILE01.DAT, and so forth.
  770.  
  771. The sequencing in FILENAME.DAT may be changed by prefixing a 1 or 2 digit
  772. number to the new file name.  The number is an index to the file name list.
  773. For example,
  774.   03CITIES.DAT
  775.   COUNTIES.DAT
  776. will change FILE03.DAT to CITIES.DAT, and FILE04.DAT to COUNTIES.DAT.
  777. All QSO text specifications for ~3 will randomly read from file CITIES.DAT,
  778. and ~4 will read from COUNTIES.DAT.
  779.  
  780.  
  781. &n ... :==     this string picked on probability nn+1    
  782. The fifth method is to send an entire line, based on a probability.  This
  783. is quite similar in concept to the #nn method above.  An ampersand (&) is
  784. used instead of the #, and there is no ending & delimiter.  The line in
  785. the file is sent or not sent, depending on the probability nn from 0 to 99.
  786. Thus with a probability of 25, the line is sent a fourth of the time.
  787.  
  788.  
  789. All of the selection tokens above end at the end of a file line.  This
  790. occurs whether or not the ending delimiter is specified.  Token
  791. sequences may not be nested, but more than one may be in effect at one
  792. time.  Examples (enclosed in " to allow spaces in the text):
  793.  
  794. "*5GEORGE*JIM*DAN*BOB*RANDY* "
  795. Send one of the above names followed by a space.
  796.  
  797. "[0*4A*K*N*W**5^%^^^*^%^^*^%^*%^^^*%^^*#30/*5%*KT*AG*AA*AE*#[ ]0 K    "
  798. Save a callsign in string number 0.  The callsign begins with a USA prefix
  799. letter of A K N or W.  This is followed by one of five combinations of
  800. letters and a digit:
  801. o  Letter, digit, three letters (example, WA7FFM)
  802. o  Letter, digit, two letters (example, KE7AU)
  803. o  Letter, digit, one letter (example, NV7V)
  804. o  Digit, three letters (example, N7KXI)
  805. o  Digit, two letters (example, W1AW)
  806. This is followed (probability 30 percent) by slash (/), then an area digit
  807. or two-letter temporary callsign designator.  The callsign is sent twice,
  808. followed by K and four extra spaces.
  809.  
  810.  
  811. TYPED CHARACTERS
  812.  
  813. Throughout the Morse code program, the ESC character is used to end the
  814. current function.  Usually, the user is prompted for a continuation 
  815. character before returning to the main menu.  This allows the user to 
  816. compare written copy with text on the screen.
  817.  
  818. The RETURN character is typically used when ending responses to prompts.
  819. It is also used to skip a character when typing keyboard keys in response
  820. to characters which have been sounded.
  821.  
  822. Lowercase letters entered from the keyboard are automatically translated to
  823. upper case.
  824.  
  825. SOUNDED CHARACTERS
  826.  
  827. If there is more than one space, tab, carriage return, or line feed in a
  828. sequence, only one is sounded.  The rest are simply printed on the screen.
  829. All of these characters are usually treated as spaces by the sound routine.
  830. Backspace, ESC, and DEL are ignored by the sound routine.
  831.  
  832.  
  833. FUNCTION KEY USE DURING PRACTICE
  834.  
  835. All of the functions except LEARN THE CHARACTERS allow the user to change
  836. the sending speed and tones on the fly.  The LEARN THE CHARACTERS Morse
  837. trainer function uses its own key functions.  There are 10 function key
  838. labels on the bottom of the screen during actual practice functions.  The
  839. numbers for these labels corresond to the function keys F1 to F10.  The keys
  840. are used as follows:
  841.   F1.  CHR + increments the character sending rate by 1 word per minute.
  842.   F2.  CHR - decrements the character sending rate by 1 word per minute.
  843.        The rate will not decrement below 1 word per minute.  Use the change
  844.        parameters menu to set the rate below one word per minute.
  845.   F3.  SPC + increments the space sending rate by 1 word per minute.  This
  846.        is the between-character rate.
  847.   F4.  SPC - decrements the space sending rate by 1 word per minute.
  848.        The rate will not decrement below 1 word per minute.  Use the change
  849.        parameters menu to set the rate below one word per minute.
  850.   F5.  DIT + increments the dit tone by 100 Hz.
  851.   F6.  DIT - decrements the dit tone by 100 Hz.  The tone will not decrement
  852.        below 100 Hz.  Use the change parameters menu to set the tone below
  853.        100 Hz.
  854.   F7.  DAH + increments the dah tone by 100 Hz.
  855.   F8.  DAH - decrements the dah tone by 100 Hz.  The tone will not decrement
  856.        below 100 Hz.  Use the change parameters menu to set the tone below
  857.        100 Hz.
  858.   F9.  PAUSE temporarily stops the practice, for checking the screen or
  859.        whatever.  Type the F9 key again to resume practice.
  860.   F10. STOP halts practice, the same as typing ESC.
  861.  
  862.  
  863. CHANGE PARAMETERS VALUES ON THE COMMAND LINE
  864.  
  865. The parameter selections described above can also be specified on the command
  866. line which invokes the Morse code program.  The specification consists of a
  867. dash, followed by the letter from this menu, immediately followed by the
  868. new value.  Thus, "morse -b4" would set the initial spacing speed to 4.
  869. The command line may of course be put into a .BAT file, making invocation
  870. of the program with parameter tuning easier.  The command line values
  871. override any values remembered in the MORSEENV.DAT file at the end of the
  872. practice session.
  873.  
  874.  
  875. EFFECTIVE CHARACTER RATE DISPLAY
  876.  
  877. The character speed, spacing speed, and basic timing unit determine the
  878. effective speed at which text is sounded.  The program calculates and displays
  879. the effective speed.  This may at times be just a shade less than the actual
  880. effective speed (perhaps 49 wpm when 50 wpm is displayed).  The default
  881. effective speed is about right for learning the 5 wpm novice exam.  The
  882. learning speed should be about 15 percent higher than the exam speed.
  883.  
  884. The file PARIS may be used as the standard for timing the character speed
  885. and spacing speed.  There is an alternate file CODEX which may also be
  886. used for timing.  Just use the send a file function and a stopwatch.  The
  887. word PARIS should be sent at the per-minute character rate specified.
  888. Thus, at 5 wpm PARIS would be sent exactly 5 times in one minute.  Be sure
  889. that CR and LF characters are sent as nothing (change parameters function M).
  890.  
  891.  
  892. KEYBOARD INPUT REDIRECTION FROM A FILE
  893.  
  894. Keyboard input may be redirected from a file.  Example:
  895.   MORSE <MORSEIN.DAT
  896.  
  897. The file is read in raw mode, with no processing of the characters.
  898. CR characters are eaten by the program.  All other characters are valid
  899. keyboard input.  When end of the file is reached, key input comes from
  900. the keyboard.
  901.  
  902. When the F9 key is used for pause, the next key (usually another F9)
  903. always comes from the keyboard.  If a redirected file is active,
  904. key input resumes from the file after the pause.
  905.  
  906. Regardless of whether stdin is from a file, the keyboard is always
  907. available.  A keyboard key press will be returned on the next key
  908. fetch.  Input will then resume from the stdin file.  This is useful
  909. for user typing after characters are sounded.
  910.  
  911. The Ctl-Break key is used to terminate input from the stdin file.
  912. All further key input will be from the keyboard.  (This is not quite
  913. perfect.  A couple more characters may be read from the file, before
  914. it is ended.)
  915.  
  916. Using the stdin file for practice text (typing strings, for example)
  917. when the user types the sent character, will not work properly.
  918. The keyboard typing requests collide with the characters from the file.
  919. Example MORSEIN.DAT file:
  920.   TI0
  921.   J0
  922.   CABCDEF
  923. Invokes the change parameters function (T).  Then requests user typing
  924. (I0) and no send ahead buffer (J0).  Requests main menu function C
  925. (type strings), then sends ABCDEF.  The newlines in the file are 
  926. treated as RETURN characters from the keyboard.  Now repeating: this
  927. sequence will not work properly.
  928.  
  929.  
  930. PRACTICE MATERIAL IN FILES
  931.  
  932. Some of the main menu functions will search for a file with practice text.
  933. If the file is found, the text in the file is used, instead of the text in
  934. the program.  The contents of the file are checked as described in the
  935. main menu functions above (for spaces, lack of spaces, etc).
  936.  
  937. The file is found by using the following search order:
  938. 1.  The file name is found in the current directory.
  939. 2.  The file extension is used as an environment definition, like PATH.
  940. 3.  The file is found by using the PATH environment definition.
  941. For expert information, refer to the Lattice C description of the fopene
  942. library function.
  943.  
  944. Given
  945.   SET PATH = .;\;\EXE   and
  946.   SET DAT = \DAT
  947. then LEARNING.DAT can be found in any of the current directory, root
  948. directory, \EXE directory, or \DAT directory.
  949.  
  950. There are example files for most of the functions which allow reading from
  951. files.  These are mentioned below.  The example files' names are different
  952. from that actually used in the function.  To use the example file, just
  953. 1.  Copy or rename the example file to the proper file name.  Example:
  954.       COPY LEARN1.DAT LEARNING.DAT
  955. 2.  Define the proper file name as an environment variable.  Example:
  956.       SET LEARNING.DAT=LEARN1.DAT
  957.     Note that there are no spaces around the = character, or in the file names.
  958.  
  959. There is no reason why the same file cannot be used for more than one
  960. purpose (for example, LEARN1.DAT can be used for learning, words, or
  961. phrases).  Just freely copy or use environment variables, as described above.
  962.  
  963. Following are the main menu functions which allow practice files:
  964.  
  965. A. LEARN THE CHARACTERS
  966.  
  967. The order of learning the characters may be specified in the file
  968. LEARNING.DAT.
  969.  
  970. The characters and words occur one to a line (with no checking for
  971. spaces), in the file.  Lines with semicolon (;) in the first column
  972. are comment lines, and are ignored.  Lines with * in the first column
  973. are the characters to be learned.  These characters are repeated in
  974. groups of five, with each group repeated.  See change parameters
  975. option H above for more information on group repeat counts.
  976.  
  977. Currently four alternate learning sequences have been identified.
  978. These are in the ARRL book Learning the Radioteletype Code.  The
  979. sequences are in the files LEARN1.DAT, LEARN2.DAT, LEARN3.DAT, and
  980. LEARN4.DAT.  See the commentary in these files for more information.
  981.  
  982. H. SEND RANDOM COMMON TERMS
  983.  
  984. The terms may be read from the file TERMFILE.DAT.
  985.  
  986. The terms occur one to a line (with no checking for spaces), in the file.
  987. Lines with semicolon (;) in the first column are comment lines, and are
  988. ignored.
  989.  
  990. I. SEND RANDOM Q SIGNALS
  991.  
  992. The Q signals may be read from the file QSIGFILE.DAT.
  993.  
  994. The Q signals occur one to a line (with no checking for spaces), in the file.
  995. Lines with semicolon (;) in the first column are comment lines, and are
  996. ignored.
  997.  
  998. L. SEND RANDOM WORDS
  999.  
  1000. The hard words may be read from the file HARDWORD.DAT; easy words from file
  1001. EASYWORD.DAT.
  1002.  
  1003. The words occur one to a line (with no spaces allowed), in the file.
  1004. Lines with semicolon (;) in the first column are comment lines, and are
  1005. ignored.
  1006.  
  1007. Any of the files LEARN1.DAT, LEARN2.DAT, LEARN3.DAT, or LEARN4.DAT may be
  1008. used as a word file.  Phrases (which contain spaces) and Morse trainer
  1009. learning lines (which start with *) will not be used, as they are not
  1010. identified as words.
  1011.  
  1012. M. SEND RANDOM PHRASES
  1013.  
  1014. The phrases may be read from the file PHRASEFI.DAT.
  1015.  
  1016. The phrases occur one to a line (with at least one space required), in the
  1017. file.  Lines with semicolon (;) in the first column are comment lines, and are
  1018. ignored.
  1019.  
  1020. Any of the files LEARN1.DAT, LEARN2.DAT, LEARN3.DAT, or LEARN4.DAT may be
  1021. used as a phrase file.  Words (which do not contain spaces) and Morse trainer
  1022. learning lines (which start with *) will not be used, as they are not
  1023. identified as phrases.
  1024.  
  1025. O. SEND A RANDOM QSO
  1026.  
  1027. The QSO specification may be read from one of the files QSOA.DAT through
  1028. QSOZ.DAT.  These correspond to the exam class selections A through Z
  1029. in the change parameters menu option Q.
  1030.  
  1031. The file QSO1.DAT may be used as a QSO text file.  This may be edited as
  1032. the user desires.  Then it must be renamed to one of the files QSOA.DAT
  1033. through QSOZ.DAT.  To select the file for practice text, set the exam class
  1034. to the corresponding letter, in the change parameters menu.  For example,
  1035. in DOS do
  1036.   EDIT QSO1.DAT
  1037.   REN QSO1.DAT QSOI.DAT
  1038. Then in the change parameters menu option Q, select I as the exam class.
  1039.  
  1040. Q. SEND YOUR FORTUNE
  1041.  
  1042. The fortune file FORTFILE.DAT may be accessed by several means.  The user may
  1043. o  Specify the path and name with the FORTUNES environment variable, as in
  1044.      SET FORTUNES=A:FORTFILE.DAT
  1045. o  Put the fortune file in the current working directory
  1046. o  Put the fortune file in the \FORTUNE\ directory.
  1047.  
  1048. If FORTUNES is specified, that is the fortune file name.  Otherwise the
  1049. file name is FORTFILE.DAT.  An attempt is made to open the file after
  1050. this file name generation.  If that fails, \FORTUNE\ is prepended to the
  1051. file name.  Another attempt is made to open the file.
  1052.  
  1053. All of the following will result in successful fortune file accesses:
  1054.   SET FORTUNES = A:FORTFILE.DAT  with FORTFILE.DAT in the current A:
  1055.     working directory.
  1056.   No FORTUNES specified, FORTFILE.DAT in current drive and directory
  1057.   No FORTUNES specified, FORTFILE.DAT in current drive \FORTUNES\ directory
  1058.   SET FORTUNES = FORTUNE.DAT with FORTUNE.DAT in current drive and
  1059.     directory.
  1060.   SET FORTUNES = FORTUNE.DAT with FORTUNE.DAT in current drive \FORTUNES\
  1061.     directory.
  1062.